ERROR 1114 (HY000): The table ‘tt2‘ is full

您所在的位置:网站首页 error 2 hy000 file ERROR 1114 (HY000): The table ‘tt2‘ is full

ERROR 1114 (HY000): The table ‘tt2‘ is full

#ERROR 1114 (HY000): The table ‘tt2‘ is full| 来源: 网络整理| 查看: 265

在这里插入图片描述 insert 操作时提示is full 问题原因

root@localhost 11:55:41 [t]>show table status from t like ‘tt2’ \G ; *************************** 1. row *************************** Name: tt2 Engine: MEMORY Version: 10 Row_format: Fixed Rows: 7056 Avg_row_length: 9440 Data_length: 67183232 Max_data_length: 67042880 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2023-02-13 11:47:46 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)

查看表信息,发现时memory 引擎表,大小刚好时64M。内存临时表大小超过max_heap_table_size时,就会报ERROR 1114 (HY000): The table ‘tt2’ is full

官方文档描述Memory 表大小受限于创建表时 max_heap_table_size

The maximum size of MEMORY tables is limited by the max_heap_table_size system variable, which has a default value of 16MB. To enforce different size limits for MEMORY tables, change the value of this variable. The value in effect for CREATE TABLE, or a subsequent ALTER TABLE or TRUNCATE TABLE, is the value used for the life of the table. A server restart also sets the maximum size of existing MEMORY tables to the global max_heap_table_size value. You can set the size for individual tables as described later in this section

e.g:

root@localhost 12:21:08 [t]>set max_heap_table_size=2097152 ;

root@localhost 12:25:39 [t]>create table q1 like information_schema.tables ; Query OK, 0 rows affected (0.02 sec)

root@localhost 12:25:46 [t]>insert into q1 select * from information_schema.tables ; ERROR 1114 (HY000): The table ‘q1’ is full

root@localhost 12:26:45 [t]>set max_heap_table_size=20971520 ;

root@localhost 12:27:12 [t]>create table q2 like information_schema.tables ; Query OK, 0 rows affected (0.02 sec)

root@localhost 12:27:18 [t]>insert into q2 select * from information_schema.tables ; Query OK, 287 rows affected (0.33 sec) Records: 287 Duplicates: 0 Warnings: 0

root@localhost 12:27:31 [t]>insert into q1 select * from information_schema.tables ; ERROR 1114 (HY000): The table ‘q1’ is full

表的max_heap_table_size 跟建表时环境有关系 解决方案

方案1:

root@localhost 12:30:38 [t]>insert into q1 select * from information_schema.tables ; ERROR 1114 (HY000): The table ‘q1’ is full

root@localhost 12:26:45 [t]>set max_heap_table_size=20971520 ;

root@localhost 12:32:30 [t]>alter table q1 engine = memory ; Query OK, 224 rows affected (0.03 sec) Records: 224 Duplicates: 0 Warnings: 0

root@localhost 12:32:38 [t]>insert into q1 select * from information_schema.tables ; Query OK, 287 rows affected (0.33 sec) Records: 287 Duplicates: 0 Warnings: 0

参考文档

The size of MEMORY tables is limited by the value of the max_heap_table_size system variable, which is not replicated (see Section 17.5.1.38, “Replication and Variables”). A change in max_heap_table_size takes effect for MEMORY tables that are created or updated using ALTER TABLE … ENGINE = MEMORY or TRUNCATE TABLE following the change, or for all MEMORY tables following a server restart. If you increase the value of this variable on the master without doing so on the slave, it becomes possible for a table on the master to grow larger than its counterpart on the slave, leading to inserts that succeed on the master but fail on the slave with Table is full errors. This is a known issue (Bug #48666). In such cases, you must set the global value of max_heap_table_size on the slave as well as on the master, then restart replication. It is also recommended that you restart both the master and slave MySQL servers, to insure that the new value takes complete (global) effect on each of them.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3